package org.lab.service;

import java.io.UnsupportedEncodingException;
import java.util.ResourceBundle;

import org.apache.log4j.Logger;

/**将bean中取回的值转换成相应的描述
 * @author 李晓娜
 *
 */
public class ResourceConvert {
	private ResourceBundle rbr;
	private Logger log;
	public ResourceConvert() {
		rbr = ResourceBundle.getBundle("keyToValue");
		log = Logger.getLogger(ResourceConvert.class);
	}
	
	/**
	 * @param key bean 中的 value
	 * @return 对应的中文描述
	 * @author 李晓娜
	 * Apr 19, 2009
	 */
	public String convert(String key) {
		if(key != null){
			String result = rbr.getString(key.trim());
			log.info("key is :"+key + ". the value is :"+result);
			return result;
		}else{
			log.info("key's value is null");
			return "";
		}
	}
	
	/**
	 * 需要键值转换
	 * @param label
	 * @param content
	 * @return
	 * @author 李晓娜
	 * Apr 21, 2009
	 */
	protected String display(String label, String content) {
		StringBuffer sb = new StringBuffer("");
		if(content!=null && content.length()>0){
			sb.append("<div class='item'><div class='left'>")
				.append(label)
				.append("</div><div class='right' id='")
				.append(content)
				.append("'>")
				.append(this.convert(content))
				.append("</div></div>");
			log.info(label+sb.toString());
			return sb.toString();
		}else{
			return "";
		}
	}
	/**
	 * 不需要键值转换
	 * @param label
	 * @param content
	 * @return
	 * @author 李晓娜
	 * Apr 21, 2009
	 */
	protected String displayNotConvert(String label, String content) {
		StringBuffer sb = new StringBuffer("");
		if(content!=null && content.length()>0){
			sb.append("<div class='item'><div class='left'>")
				.append(label)
				.append("</div><div class='right' id='")
				.append(content)
				.append("'>")
				.append(content)
				.append("</div></div>");
			log.info(label+sb.toString());
			return sb.toString();
		}else{
			return "";
		}
	}
	/**
	 * 根据isConvert判断是否进行编码转换
	 * @param label
	 * @param content
	 * @param isConvert
	 * @return
	 * @author 李晓娜
	 * Apr 22, 2009
	 */
	protected String display(String label, String content, boolean isConvert) {
		StringBuffer sb = new StringBuffer("");
		if(isConvert){
			if(content!=null && content.length()>0 ){
				try {
					sb.append("<div class='item'><div class='left'>")
						.append(label)
						.append("</div><div class='right' id='")
						.append(content)
						.append("'>")
						.append(new String(content.getBytes("ISO-8859-1"),"GB2312"))
						.append("</div></div>");
				} catch (UnsupportedEncodingException e) {
					log.error("content.getBytes出现异常",e);
				}
				log.info(label+sb.toString());
				return sb.toString();
			}else{
				return "";
			}
		}else{
			return displayNotConvert(label, content);
		}
	}
	/**
	 * 根据mark值决定显示方式
	 * @param label 
	 * @param content
	 * @param mark
	 * @return
	 * @author 李晓娜
	 * Apr 22, 2009
	 */
	public String display(String label, String content, int mark) {
		String result = "";
		switch (mark) {
		case 0:
			result = display(label, content);//需要键值转换
			break;
		case 1:
			result = display(label, content, true);//需要编码转换
			break;
		case 2:
			result = display(label, content, false);//数值类不需要任何转换
			break;
		default:
			result = display(label, content, false);
			break;
		}
		return result;
	}
}
